#ifndef USER_INCLUDE_UART_H
#define  USER_INCLUDE_UART_H
#include "MC3172.h"
#define GPCOM_OUT_DISABLE(sel) (GPCOM_P0_OUTPUT_DISABLE<<(4*(sel)))
#define GPCOM_OUT_ENABLE(sel)  (GPCOM_P0_OUTPUT_ENABLE<<(4*(sel)))
#define GPCOM_PX_HIGH(sel)     (GPCOM_P0_IS_HIGH<<(4*(sel)))
#define GPCOM_INPUT_ENABLE(sel) (GPCOM_P0_INPUT_ENABLE<<(8*(sel)))
#define GPCOM_OVERRID_GPIO(sel) (GPCOM_P0_OVERRIDE_GPIO<<(8*(sel)))
/*
 *             P0      P1      P2       P3
 * UART0       A.00    A.01    A.02     A.03
 * UART1       A.04    A.05    A.06     A.07
 * UART2       A.08    A.09    A.10     A.11
 * UART3       A.12    A.13    A.14     A.15
 * UART4       B.00    B.01    B.02     B.03
 * UART5       B.04    B.05    B.06     B.07
 * UART6       B.08    B.09    B.10     B.11
 * UART7       B.12    B.13    B.14     B.15
 * UART8       C.00    C.01    C.02     C.03
 * UART9       C.04    C.05    C.06     C.07
 * UART10      C.08    C.09    C.10     C.11
 * UART11      C.12    C.13    C.14     C.15
 *
 */
enum COM_PORT
{
 GPCOM0=GPCOM0_BASE_ADDR,
 GPCOM1=GPCOM1_BASE_ADDR,
 GPCOM2=GPCOM2_BASE_ADDR,
 GPCOM3=GPCOM3_BASE_ADDR,
 GPCOM4=GPCOM4_BASE_ADDR,
 GPCOM5=GPCOM5_BASE_ADDR,
 GPCOM6=GPCOM6_BASE_ADDR,
 GPCOM7=GPCOM7_BASE_ADDR,
 GPCOM8=GPCOM8_BASE_ADDR,
 GPCOM9=GPCOM9_BASE_ADDR,
 GPCOM10=GPCOM10_BASE_ADDR,
 GPCOM11=GPCOM11_BASE_ADDR
};
void uart_init(u32 uart_num,u8 in_pin,u8 out_pin,u32 baud,u8* read_ptr);
void UartSendByte(u32 gpcom_sel, u8 dat);
void UartReadData(u8*read_ptr,u32 gpcom_sel,u8* pData,u16 size);
void Print_init(u32 uart_num,u8 in_pin,u8 out_pin,u32 baud,u8* read_ptr);

#endif
